package com.celeste.mcpserverfeishu.dto.block;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 创建飞书文档块请求
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CreateBlockRequest {
    /**
     * 创建块的位置索引
     */
    private Integer index;
    
    /**
     * 要创建的块列表
     */
    private List<Block> children;
    
    /**
     * 块对象
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class Block {
        /**
         * 块类型，2代表文本块
         */
        private Integer block_type;
        
        /**
         * 文本内容
         */
        private Text text;
    }
    
    /**
     * 文本内容对象
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class Text {
        /**
         * 文本元素列表
         */
        private List<TextElement> elements;
        
        /**
         * 文本样式
         */
        private Object style;
    }
    
    /**
     * 文本元素对象
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class TextElement {
        /**
         * 文本运行对象
         */
        private TextRun text_run;
    }
    
    /**
     * 文本运行对象
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class TextRun {
        /**
         * 文本内容
         */
        private String content;
        
        /**
         * 文本元素样式
         */
        private TextElementStyle text_element_style;
    }
    
    /**
     * 文本元素样式
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class TextElementStyle {
        /**
         * 背景颜色
         */
        private Integer background_color;
        
        /**
         * 文本颜色
         */
        private Integer text_color;
        
        /**
         * 是否加粗
         */
        private Boolean bold;
        
        /**
         * 是否为行内代码
         */
        private Boolean inline_code;
        
        /**
         * 是否斜体
         */
        private Boolean italic;
        
        /**
         * 是否删除线
         */
        private Boolean strikethrough;
        
        /**
         * 是否下划线
         */
        private Boolean underline;
    }
} 